当前位置: 首页 >  帮助中心> vc 嵌入chrome浏览器插件(mfc内嵌谷歌浏览器)

vc 嵌入chrome浏览器插件(mfc内嵌谷歌浏览器)

硬件: Windows系统 版本: 213.2.1564.927 大小: 84.85MB 语言: 简体中文 评分: 发布: 2024-08-06 更新: 2024-10-16 厂商: 谷歌信息技术

硬件:Windows系统 版本:213.2.1564.927 大小:84.85MB 厂商: 谷歌信息技术 发布:2024-08-06 更新:2024-10-16

硬件:Windows系统 版本:213.2.1564.927 大小:84.85MB 厂商:谷歌信息技术 发布:2024-08-06 更新:2024-10-16

苹果下载

跳转至官网

在Visual C++中嵌入Chrome浏览器插件需要使用Chrome

API,这是一项比较复杂的任务。本文将详细介绍如何在Visual C++中嵌入Chrome浏览器插件,并提供一些实用的技巧和注意事项。

一、准备工作

在使用Chrome API之前,您需要确保已经安装了Chrome浏览器,并且开启了“允许加载未标记为安全的扩展程序”选项。您还需要下载并安装Chrome

API的相关库文件。

二、创建项目

在Visual C++中创建一个新的Win32应用程序项目,并选择“MFC Application”作为模板。您需要添加以下头文件和库文件:

`atlbase.h`

`atlcomcli.h`

`atlstr.h`

`mshtml.h`

`urlmon.h`

`wininet.h`

`chromeext.lib`(Chrome API库)

三、编写代码

在您的项目中,您需要实现一个类来处理Chrome浏览器插件的初始化和事件处理。以下是一个简单的示例:

```cpp

include

include

include

include

include

include

include

include// Chrome API库头文件

class CChromeExtensionHandler : public IDispatch {

public:

CChromeExtensionHandler();

STDMETHOD_(ULONG, AddRef)();

STDMETHOD_(ULONG, Release)();

STDMETHOD(QueryInterface)(REFIID riid, void ppvObject);

STDMETHOD(GetTypeInfoCount)(UINT pctinfo);

STDMETHOD(GetTypeInfo)(UINT itinfo, LCID lcid, ITypeInfo pptinfo);

STDMETHOD(GetIDsOfNames)(REFIID riid, LPOLESTR rgszNames, UINT cNames, LCID lcid, DISPID rgdispid);

STDMETHOD(Invoke)(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS pdispparams, VARIANT pvarResult, EXCEPINFO pexcepinfo, UINT puArgErr);

private:

long _cRef; // 引用计数器

};

CChromeExtensionHandler::CChromeExtensionHandler() : _cRef(1) {}

CChromeExtensionHandler::~CChromeExtensionHandler() {}

STDMETHODIMP CChromeExtensionHandler::AddRef() { return (_cRef++); }

STDMETHODIMP CChromeExtensionHandler::Release() { return (--_cRef); }

STDMETHODIMP CChromeExtensionHandler::QueryInterface(REFIID riid, void ppvObject) { return E_NOINTERFACE; }

STDMETHODIMP CChromeExtensionHandler::GetTypeInfoCount(UINT pctinfo) { return E_NOTIMPL; }

STDMETHODIMP CChromeExtensionHandler::GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo pptinfo) { return E_NOTIMPL; }

STDMETHODIMP CChromeExtensionHandler::GetIDsOfNames(REFIID riid, LPOLESTR rgszNames, UINT cNames, LCID lcid, DISPID rgdispid) { return E_NOTIMPL; }

STDMETHODIMP CChromeExtensionHandler::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS pdispparams, VARIANT pvarResult, EXCEPINFO pexcepinfo, UINT puArgErr) { return E_NOTIMPL; }

HRESULT CreateChromeExtensionHandlerInstance(); // 创建Chrome插件处理实例的函数声明

void OnMessageReceived(HWND hWndBrowserHostWindow, DWORD_PTR idEvent); // Chrome插件消息接收函数声明

void OnPaint(HDC hdc); // Chrome插件绘制函数声明

void OnResize(int width, int height); // Chrome插件窗口大小改变函数声明

void OnLoadCompleted(bool succeeded); // Chrome插件加载完成回调函数声明

// ... 其他函数声明 ...

```



返回顶部